package br.ufrn.engcomp.comum.dao;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.ufrn.engcomp.arq.dao.GenericDAO;
import br.ufrn.engcomp.arq.exceptions.DAOException;
import br.ufrn.engcomp.comum.dominio.Usuario;

/**
 *
 *@author Claudio Trindade
 *
 */

public class UsuarioDAO extends GenericDAO<Usuario> {

	public Usuario findAtivoByLogin(String login) throws DAOException {
		EntityManager em = getEntityManager();
		Usuario usuario = new Usuario();
		try {
			Query q = em.createQuery("select object(model) from " + usuario.getClassName() + " as model where model.login='"+login+"' and model.ativo=true");
			usuario = (Usuario) q.getSingleResult();
		} catch (NoResultException n) {
			throw new DAOException("erro_usuario_empty");
		} catch (Exception ex) {
			throw new DAOException(ex);
		} finally{
			em.close();
		}
		return usuario;
	}

	public List<Usuario> findBySQL(String query) throws DAOException {
		EntityManager em = getEntityManager();
		List<Usuario> retorno = new ArrayList<Usuario>();
		try {
			Query q = em.createQuery(query);
			retorno = q.getResultList();
		} catch (Exception ex) {
			throw new DAOException(ex);
		} finally{
			em.close();
		}
		return retorno;
	}

}
